package com.mx.zb.mng.utils.context;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.mx.zb.mng.cache.OperatorCaches;
import com.mx.zb.mng.utils.LogManage;

public class LoginRestInterceptor implements HandlerInterceptor{
	
	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@Autowired
	OperatorCaches operatorCaches;
	@Autowired 
	LogManage logManage;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // TODO Auto-generated method stub
        logger.debug("------preHandle------");
        //获取session
        HttpSession session = request.getSession();
        //判断用户ID是否存在，不存在就跳转到登录界面
        if(session.getAttribute("operatorId") == null){
            logger.debug("------:跳转到login页面！");
            response.sendRedirect("/");
            return false;
        }else{
        	logManage.saveAgentLog(request);
//        	if(handler instanceof HandlerMethod) {
//        		String operatorId = (String)session.getAttribute("operatorId");
//        		HandlerMethod hm = (HandlerMethod)handler; 
//    	        Object control=hm.getBean();
//    			
//    			//简单的就这样， 复杂的话，还可以考虑controller那边支持注解方式
//    			try {
//					Method method=control.getClass().getMethod("setOperatorId", String.class);
//					method.invoke(control, operatorId);
//				} catch (Exception e) {
//					// TODO Auto-generated catch block
//					logger.debug("没有设置当前登录用户的ctrl:"+request.getRequestURI());
//				}
//        	}
        	ContextThread.set(new ContextInfo(request));
            return true;
        }
    }

    /**
     * 该方法将在Controller执行之后，返回视图之前执行
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        // TODO Auto-generated method stub
    	
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // TODO Auto-generated method stub

    }

}
